package com.yociyy.admin.controller;

import java.util.Map;

import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.yociyy.admin.biz.BasePostBiz;
import com.yociyy.common.core.msg.R;
import com.yociyy.common.core.msg.TableR;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import com.yociyy.admin.model.constant.UserConstants;
import com.yociyy.admin.model.entity.BasePost;

/**
 * 系统管理-岗位信息管理
 *
 * @author Y.yang
 * @date 2019/12/15
 */
@RestController
@RequestMapping("post")
public class BasePostController {

	@Autowired
	private BasePostBiz postBiz;

	/**
	 * 查询岗位信息分页列表
	 *
	 * @param params 条件参数查询
	 * @return 岗位信息分页列表
	 */
	@GetMapping("/page")
	public TableR page(@RequestParam Map<String, Object> params) {
		// 查询列表数据
		PageHelper.startPage(params);
		return new TableR(postBiz.selectPostAll());
	}

	/**
	 * 查询全部岗位信息
	 *
	 * @return 岗位信息列表
	 */
	@GetMapping("/all")
	public R all() {
		return R.success(postBiz.selectPostAll());
	}

	/**
	 * 新增岗位信息
	 *
	 * @param post 岗位信息对象
	 * @return 结果
	 */
	@PostMapping
	public R addPost(@RequestBody BasePost post) {
		postBiz.insertPost(post);
		return R.success();
	}

	/**
	 * 查询岗位信息通过id
	 *
	 * @param id 岗位id
	 * @return 结果
	 */
	@GetMapping("/get/{id}")
	public R getPost(@PathVariable int id) {
		// return R.success(postBiz.selectById(id));
		return null;
	}

	/**
	 * 更新岗位信息
	 *
	 * @param Post 岗位信息
	 * @return 结果
	 */
	@PutMapping
	public R putPost(@RequestBody BasePost Post) {
		postBiz.updatePost(Post);
		return R.success();
	}

	/**
	 * 删除岗位信息
	 *
	 * @param ids 岗位ids串
	 * @return 结果
	 */
	@DeleteMapping
	public R delPost(@RequestParam String ids) {
		long[] idArray = StrUtil.splitToLong(ids, ",");
		postBiz.deleteByIds(idArray);
		return R.success();
	}

	/**
	 * 校验岗位名称唯一性
	 *
	 * @param post 岗位对象信息
	 * @return 结果
	 */
	@PostMapping("/checkPostName")
	public R checkPostName(@RequestBody BasePost post) {
		if (StrUtil.isNotEmpty(post.getPostName()) &&
				UserConstants.POST_NAME_NOT_UNIQUE.equals(postBiz.checkPostNameUnique(post))) {
			return R.error("岗位名称'" + post.getPostName() + "'已存在");
		}
		return R.success();
	}

	/**
	 * 校验岗位编码唯一性
	 *
	 * @param post 岗位对象信息
	 * @return 结果
	 */
	@PostMapping("/checkPostCode")
	public R checkPostCode(@RequestBody BasePost post) {
		if (StrUtil.isNotEmpty(post.getPostCode()) &&
				UserConstants.POST_CODE_NOT_UNIQUE.equals(postBiz.checkPostCodeUnique(post))) {
			return R.error("岗位编码'" + post.getPostCode() + "'已存在");
		}
		return R.success();
	}

}